Computer systems and related technology affect many aspects of society. Indeed, the computer system's ability to process information has transformed the way we live and work. While computer systems traditionally operated directly on energy supplied by the power grid (e.g., desktop computers), recent years have brought about the proliferation of mobile computing devices (e.g., laptops, smartphones, tablets) that operate primarily on energy stored in batteries. While the development of many hardware components of mobile computing devices (e.g., processing, storage, memory, and displays) has been rapid, energy storage (e.g., battery) technology—including battery energy density—has largely remained unchanged. As such, while energy demands by the hardware components of mobile computing devices, and use of mobile computing device, have increased, available energy capacity has largely remained constant.
The rate of usage of energy by hardware components of a mobile computing device is largely dependent on the software that is executing on the mobile computing device. Thus, while operating on battery power, mobile computing devices have a fixed amount of energy that can be used by all applications and the operating system before the battery is exhausted. Some applications tend to cause more energy usage by hardware components than others, either due to the nature of the work they perform, or due to bugs and other implementation defects. Additionally, over the lifetime of a device, users tend to install more and more applications without uninstalling unused applications. As a result, mobile computing devices can build up a collection of unused or rarely used applications that cause energy resources to be consumed by hardware components as a result of executing background activity.
As a result of the foregoing, mobile computing device often achieve unacceptably short and/or inconsistent device runtimes when operating on battery power.